IronMike Software Inc. has recently brought to market several Adobe Photoshop Plug in Modules (PIM’s) (the IronMike Plug-in Kit_v3.0 (PIK)). In porting the IronMike PIM’s over to the Windows environment, it became clear that a data fork-only, cross-platform compressed file format would be a very useful tool. Further, in a high-pressure, time-sensitive production environment, as is the burden of all of IronMike’s customers, the ability to quickly display a 'Thumbnail' or 'Preview' image for content verification, as well as IPTC caption data would be a great time-saver.
While the TIFF6.0 standard defines a definitive but complex JPEG method for embedding a textbook JPEG stream into the TIFF format, the embedding of the simpler JFIF flavor of JPEG is not discussed or defined, perhaps because JFIF is a more recent development.
The principals of IronMike Software Inc., Michael Evans and Miles Waldron, have designed an arbitrary and simple adaptation of the TIFF6.0 standard and have embodied their design in a matched pair of Adobe Photoshop Import and Export Plug in Modules ('MultiTIFF Acquire_v1.0' and 'MultiTIFF Export_v1.0').
The MultiTIFF TIFF format is built on three de facto standards:
• The TIFF 6.0 Specification defines a method by which multiple images can be stored inside a TIFF file.
• TIFF tag 33723 (Hex: $83BB) is in wide use by over 1200 sites (members and clients of the Associated Press, the world’s largest distributor of continuous tone images) to store caption data according to the IPTC (International Press Telecommunications Committee) standard.
• The Storm Technologies JPEG Libraries.
IronMike Software is circulating this document as well as sample beta copies of their MultiTIFF PIM’s in the interest of sparking discussion of the subject and accelerating the eventual adoption by the TIFF standards committee of a JFIF within TIFF definition. In addition, a simple utility, 'IronMike DrTIFF' is being distributed which enables the user to analyze the TIFF tags for any TIFF file and to create a textfile dump of a file’s TIFF tags.
Features of the MultiTIFF design include:
The first image in the TIFF file is the full-resolution 'Primary' image
(TIFF Tag #254-NewSubfileType: value set to 0)
The second image is a reduced resolution 'Preview' image with a maximum dimension of 512 pixels (TIFF Tag #254-NewSubfileType: value set to 1)
The second image is a reduced resolution 'Thumbnail' image with a maximum dimension of 128 pixels (TIFF Tag #254-NewSubfileType: value set to 1)
The JFIF compressed image data streams are created with Storm Technology’s A4 JPEG Libraries.
Users of the MultiTIFF Export PIM can use the standard Storm compression settings of 'Excellent', 'High', 'Good', 'Fair', or a user defineable number between 1 and 100 where 1 represents the lowest compression setting and 100 represents the highest compression setting.
To further differentiate between the three images in the MultiTIFF file the following scheme has been adopted for the 'PageName' TIFF Tag #285 (Hex: $011D):
Full Resolution Image: TIFF Tag #285 value: "Primary"
Preview Image: TIFF Tag #285 value: "Preview"
Thumbnail Image: TIFF Tag #285 value: "Thumbnail"
To indicate that a JFIF stream is embedded in the MultiTIFF file the 'Compression' TIFF Tag #259 (Hex: $0103) is assigned a value of 84 (Hex: $0054)
an arbitrary, but carefully chosen, number of deep cosmic significance to the MultiTIFF authors.
A further indicator of the MultiTIFF format is the 'Software' TIFF Tag #305 (Hex: $0131) which contains the string "IronMike™".
A TIFF tag listing of a typical MultiTIFF file follows:
(IFD 1 @ 0X0007767C)
0X00FE NewSubFile long 1 0X00000000
0X0100 ImageWidth long 1 0X00000640
0X0101 ImageLength long 1 0X000004B5
0X0102 BitsPerSample short 3 0X0007775A
0X0103 Compression short 1 0X00540000
0X0106 PhotometricInterpretation short 1 0X00020000
0X010E ImageDescription byte 558 0X00077760
0X0111 StripOffsets long 1 0X00000008
0X0115 SamplesPerPixel short 1 0X00030000
0X0116 RowsPerStrip long 1 0X000004B5
0X0117 StripByteCounts long 1 0X00077674
0X011A XResolution rational 1 0X0007798E
0X011B YResolution rational 1 0X00077996
0X011D PageName ascii 7 0X0007799E
0X0128 ResolutionUnit short 1 0X00020000
0X0131 Software ascii 9 0X000779A5
0X83BB LeafANPATag byte 463 0X000779AE
0X8568 AXSANPATag byte 463 0X00077B7D
(IFD 2 @ 0X00077D4C)
0X00FE NewSubFile long 1 0X00000001
0X0100 ImageWidth long 1 0X000001FF
0X0101 ImageLength long 1 0X00000181
0X0102 BitsPerSample short 3 0X00077E06
0X0103 Compression short 1 0X00540000
0X0106 PhotometricInterpretation short 1 0X00020000
0X0111 StripOffsets long 1 0X00077E2C
0X0115 SamplesPerPixel short 1 0X00030000
0X0116 RowsPerStrip long 1 0X00000181
0X0117 StripByteCounts long 1 0X00015CDC
0X011A XResolution rational 1 0X00077E0C
0X011B YResolution rational 1 0X00077E14
0X011D PageName ascii 7 0X00077E1C
0X0128 ResolutionUnit short 1 0X00020000
0X0131 Software ascii 9 0X00077E23
(IFD 3 @ 0X0008DB08)
0X00FE NewSubFile long 1 0X00000001
0X0100 ImageWidth long 1 0X0000007F
0X0101 ImageLength long 1 0X00000060
0X0102 BitsPerSample short 3 0X0008DBC2
0X0103 Compression short 1 0X00540000
0X0106 PhotometricInterpretation short 1 0X00020000
0X0111 StripOffsets long 1 0X0008DBEA
0X0115 SamplesPerPixel short 1 0X00030000
0X0116 RowsPerStrip long 1 0X00000060
0X0117 StripByteCounts long 1 0X00000C41
0X011A XResolution rational 1 0X0008DBC8
0X011B YResolution rational 1 0X0008DBD0
0X011D PageName ascii 9 0X0008DBD8
0X0128 ResolutionUnit short 1 0X00020000
0X0131 Software ascii 9 0X0008DBE1
Notice that:
• The start of the JFIF data stream in each image is pointed to by the offset contained in its 'StripOffsets' TIFF Tag #273 (Hex: $0111)
• The 'StripByteCounts' TIFF Tag #279 (Hex: $0117) has a count of one and the associated value offset contains The length of the JFIF stream.
• In an effort to make the MultiTIFF files readable by AP-Leaf Picture Desks, AP-Leaf LeafPreserver image archiver as well as the AXS line of products, two identical TIFF tags (#33723 [Hex: $83BB]-'LeafANPATag' and #34152 [Hex: $8568] -AXSANPATag) are written that accompany the full-resolution only. In addition, a formatted 'text-blob', containing a formatted compilation of all available IPTC record #2 caption data is written to the Primary image’s 'ImageDescription' TIFF Tag #270 (Hex: $010E). IronMike Software intends to support any other widely-used TIFF tag that contains caption data.
IronMike Software welcomes any and all comments, suggestions and bug reports.